/*
 *  Truck.cpp
 *
 *  Created on: 10 maart , 2015
 *  Author: Patrick van ieperen
 */

#include "Truck.h"
using namespace std;


    Truck::Truck(const string& model, const string& material, int diameter, int nrWheels, int power)
        : Car(model,material,diameter,nrWheels)
    {
        this->power = new int(power);
    }

    Truck::~Truck()
    {
       delete power;
       power=NULL;//het is beter om aan te wennen om pointer na delete op null te zetten. ook al is het niet nodig.
    }

    int Truck::getPower()
    {
        return *power;
    }

    Truck::Truck(const Truck& myTruck)
        : Car(myTruck)
   // Dit noemen ze ook wel de copy constructor
   // als parameter wordt een referentie naar een Car object
   // deze functie moet dus een exacte copy maken (deep copy)
   {
        power = new int( *myTruck.power); // myTruck.power is een pointer.
                                          // voor de init hebben we de waarde nodig van de pointer dus een *

   }

    Truck& Truck::operator=(const Truck& myTruck)
    {
        if ( this == &myTruck)
        {
            return *this; // omdat je referentie terug geeft.
        }
        power = new int( *myTruck.power);
        Car::operator =(myTruck);

        return *this;
    }
